# 导入copy模块
import copy

# TODO 浅拷贝
# 只拷贝最外层对象
# list 可变
list1 = [1, 2 , 3, ['a', 'b', 'c']]
list2 = copy.copy(list1)
print(f'list1:{id(list1)}')
print(f'list2:{id(list2)}')
print(f'list1[3]:{id(list1[3])}')
print(f'list2[3]:{id(list2[3])}')

# str 不可变
str1 = 'abcd'
str2 = copy.copy(str1)      # 不可变类型拷贝是引用    内存地址    id(str)
print(f'str1:{id(str1)}')
print(f'str2:{id(str2)}')

# TODO 深拷贝 复制一份儿一模一样的数据
list1 = [1, 2 , 3, ['a', 'b', [1, 2]]]
list2 = copy.deepcopy(list1)
print(f'list1:{id(list1)}')
print(f'list2:{id(list2)}')
print(f'list1[3]:{id(list1[3])}')
print(f'list2[3]:{id(list2[3])}')
print(f'list1[3][2]:{id(list1[3][2])}')
print(f'list2[3][2]:{id(list2[3][2])}')